let arr = [1, 2, [3, 5, 12], [4, 5, 7, 9, [7, 8, 9]]];
//采用栈结构
const flatArrByStack = (arr) => {
  const resArr = [];
  while (arr.length) {
    const item = arr.pop();
    if (Array.isArray(item)) {
      arr.push(...item);
    } else {
      resArr.push(item);
    }
  }
  return resArr;
};
// console.log('flatArrByStack:', flatArrByStack(arr));
//采用迭代形式遍历
const flatArrByIterate = (arr) => {
  const resArr = [];
  function loop(param) {
    param.forEach((item) => {
      if (Array.isArray(item)) {
        loop(item);
      } else {
        resArr.push(item);
      }
    });
  }
  loop(arr);
  return resArr;
};
// console.log('flatArrByIterate',flatArrByIterate(arr));
//直接采用 Array.prototype.flat() 原生API
console.log('arr.flat', arr.flat(3));
